# python数据基础第三节：DataFrame数据框
"""
    数据处理：pandas
    数据计算：NumPy
    数据可视化：matplotlib
"""
# 导入pandas中的序列 DataFrame
from pandas import DataFrame

# 定义一个数据框,数据必须一样的列，否则会报错
df = DataFrame({'age':[22,23,24],
                "name":["tom","cat","bob"]})

# 带索引创建一个数据框
df1 = DataFrame({'age':[22,23,24],
                 "name":["tom","cat","bob"]},
                index=["first","second","third"])
# 只反问df1中的age列
print("按列访问：{}".format(df1["age"]))

# 查看指定行数
print("查看指定行数:{}".format(df1[1:2]))

# 按行列号访问 表示访问两行，第一列
print("按行列号访问:{}".format(df1.iloc[0:2,0:1]))

# 按行索引访问列名
print("按行索引访问列名:{}".format(df.at[0,"name"]))

# 修改列名
print("查看所有列名：{}".format(df1.columns))
df.columns=['age2','name2']
print("修改列名:{}".format(df))

# 修改行索引
print("修改行索引：{}".format(df1.index))
df1.index = range(1,4)
print("修改行索引：{}".format(df1))

# 删除数据df
df = df.drop(1)# 通过行删除
print("通行删除：{}".format(df))

df = DataFrame({'age':[22,23,24],
                "name":["tom","cat","bob"]})
# 通过列名删除
# df = df.drop("age2",axis=1)
# print("通过列名删除：{}".format(df))

df = DataFrame({'age':[22,23,24],
                "name":["tom","cat","bob"]})
# 第二种删除列的方法：
del df['age']
print("用del删除列：{}".format(df))

df = DataFrame({'age':[22,23,24],
                "name":["tom","cat","bob"]})
# 增加列数
df.loc[len(df)+1] = [24,"KENKEN"]
print("增加一行：{}".format(df))

# 增加一列
df["newco"] = [2,3,4]
print("增加一列：{}".format(df))